normalized_exact_match 初驗了各選手的結果Semantic Similarity Evaluator: 驗證 response 與 reference_answer 的相似性Correctness Evaluator: 給定 query, response 與 reference_answer,要求 llm 判斷答案正確性Faithfulness Evaluator: 給定 response 與 reference_context,要求 llm 判斷 response 是否有忠於 reference_contextCorrectness Evaluator 靠不靠譜吧!
那我們就開始吧!
evaluation_dataset 存放的是先前準備好給 evalautor 當 input 的資料集
normalized_exact_match 跑出來的結果
CorrectnessEvaluator.pygpt-5-mini 作為 CorrectnessEvaluator 的 llm這邊要先說明一下,我們昨天在使用 exact match 評估的時候,只有比較 題幹 的部分
我們今天直接評估整個單選題的結果,因此預期是 correctness evaluator 會抓出比 exact match 更多的 錯誤結果
此外,由於 correctness 整體的評分結果是從滿分(5分)開始,一個瑕疵就給 4 分,兩個瑕疵就給 3分依此類推
整體來說,在 80 題的評估內,
False Negative,應該判定為有問題,而 correctness 判定為無問題
0.9375 的準確率在我們的問題集上詳細結果在: 這裡
由於前述提到,correctness 基本上是直接 prompt llm 進行驗證
而根據我們先前的經驗,直接將 default prompt 翻譯為中文並且微幅修改可以增加整體的準確性
因此我們修改了 default prompt 再進行一次驗證
調整 correctness_evaluator prompt 的方法是:
correct_evaluator = CorrectnessEvaluator(llm = llm, score_threshold=4.0, eval_template=chat_template)
並且可以使用 get_prompts 查看是否成功更新:
correct_evaluator.get_prompts()
prompt_correctness_evaluator 的 結果在: 這裡
False Positive,有辦法在修改後除去這些錯誤
False Negative:
0.95 的準確率在我們的問題集上